package com.vision.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.vision.mapper.UserCollectMapper;
import com.vision.pojo.vo.CollectContentVO;
import com.vision.pojo.vo.PageVO;
import com.vision.service.UserCollectService;
import com.vision.utils.ThreadLocalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public class UserCollectServiceImpl implements UserCollectService {
    @Autowired
    private UserCollectMapper userCollectMapper;

    /**
     * 添加收藏视频
     * @param videoId 视频id
     */
    @Override
    public void addCollect(Integer videoId) {
        // 1. 获取当前登录用户 ID
        Map<String, Integer> claims = ThreadLocalUtil.get();
        Integer userId = claims.get("id");
        // 2. 添加收藏视频
        userCollectMapper.insert(userId,videoId);
    }

    /**
     * 取消收藏视频
     * @param videoId 视频id
     */
    @Override
    public void cancelCollect(Integer videoId) {
        Map<String, Integer> claims = ThreadLocalUtil.get();
        userCollectMapper.cancelCollect(claims.get("id"), videoId);
    }

    /**
     * 分页查询收藏视频列表
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @param userId 用户id
     * @return 收藏视频列表
     */
    @Override
    public PageVO<CollectContentVO> getCollectVideoForPage(Integer pageNum, Integer pageSize, Integer userId) {
        // 1. 新建 pageVO 对象
        PageVO<CollectContentVO> pageVO = new PageVO<>();
        // 2. 开启查询
        PageHelper.startPage(pageNum,pageSize);
        // 3. 查询收藏视频
        List<CollectContentVO> collectContentVOS = userCollectMapper.selectCollectVideoForPage(userId);
        // 4. 返回结果
        Page<CollectContentVO> result = (Page<CollectContentVO>) collectContentVOS;
        pageVO.setTotal(result.getTotal());
        pageVO.setItems(result.getResult());
        return pageVO;
    }
}
